Package com.apps.ubc.cc.ajax

Source Code of com.apps.ubc.cc.ajax.SearchSuggestionController

/*
* AUTHOR: Kevin Lam
*/

package com.apps.ubc.cc.ajax;

import java.io.IOException;
import java.util.Iterator;
import java.util.List;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.apps.datastore.UBCCourseSpiderDatastore;
import com.apps.datastore.dao.CourseInformationObject;
import com.apps.datastore.dao.DepartmentInformationObject;
import com.apps.datastore.dao.SectionInformationObject;
import com.apps.utils.CourseSearchUtils;

public class SearchSuggestionController extends HttpServlet {
 
  private static UBCCourseSpiderDatastore d = new UBCCourseSpiderDatastore();
 
  public void doGet(HttpServletRequest req, HttpServletResponse resp) {
    String searchQuery = req.getParameter("searchQuery");
    String[] searchTerms = null;
    String dept = "";
    String course = "";
    String response = "";
    String prefix = "";
    searchQuery = CourseSearchUtils.parseSearch(searchQuery);
    if(searchQuery.contains(" "))
      searchTerms = searchQuery.split(" ");
    else {
      searchTerms = new String[1];
      searchTerms[0] = searchQuery;
   
    if (searchTerms != null) {
      DepartmentInformationObject firstDept = null;
        if (searchTerms.length == 1) {
          prefix = searchTerms[0];
          List<DepartmentInformationObject> diol = d.queryDepartmentByPrefix(prefix);
          if(!diol.isEmpty()) {
            for(Iterator<DepartmentInformationObject> i = diol.iterator(); i.hasNext();) {
              DepartmentInformationObject dio = i.next();
              String deptId = dio.getDepartmentId();
              String title = "<i>"+dio.getSubjectTitle()+"</i>";
              deptId =  "<b>"+prefix+"</b>" + deptId.substring(prefix.length());
              String out = deptId +" " + title +"\n";
              if(!response.contains(out))
                response += out;
            }
          }
          if(diol.size() == 1)
            firstDept = diol.get(0);
        }
      CourseInformationObject firstCourse = null;
        if (searchTerms.length == 2 || firstDept != null) {
          if(firstDept != null)
            dept = firstDept.getDepartmentId();
          else
            dept = searchTerms[0];
          if(searchTerms.length == 2)
            prefix = searchTerms[1];
          else
            prefix = "";
          List<CourseInformationObject> ciol = d.queryCourseByPrefix(dept, prefix);
          if(!ciol.isEmpty()){
            for(Iterator<CourseInformationObject> i = ciol.iterator(); i.hasNext();) {
              CourseInformationObject cio = i.next();
              String deptId = "<b>"+cio.getDepartmentId()+"</b>";
              String courseId = cio.getCourseId();
              String courseTitle ="<i>"+ cio.getCourseTitle()+"</i>";
              courseId =  "<b>"+prefix+"</b>" + courseId.substring(prefix.length());
              String out =  deptId +" " + courseId + " " +courseTitle +"\n";
              if(!response.contains(out))
                response += out;
            }
          }
          if(ciol.size() == 1)
            firstCourse = ciol.get(0);
        }
        if (searchTerms.length == 3|| firstCourse !=null) {
          dept = searchTerms[0];
          if(searchTerms.length >= 2)
            course = searchTerms[1];
          else if (firstCourse != null)
            course = firstCourse.getCourseId();
          if(searchTerms.length == 3)
            prefix = searchTerms[2];
          else
            prefix = "";
          List<SectionInformationObject> siol = d.querySectionByPrefix(dept, course, prefix);
          if(!siol.isEmpty()){
            for(Iterator<SectionInformationObject> i = siol.iterator(); i.hasNext();) {
              SectionInformationObject sio = i.next();
              String deptId = "<b>"+sio.getDepartmentId()+"</b>";
              String courseId = "<b>"+sio.getCourseId()+"</b>";
              String sectionId = sio.getSectionId();
              String activity ="<i>"+ sio.getActivity()+"</i>";
              sectionId = "<b>"+prefix+"</b>" +sectionId.substring(prefix.length());
              String out= deptId +" " + courseId +" "+ sectionId+ " "+activity+"\n";
              if(!response.contains(out))
                response += out;
            }
          }
        }

      }
    if(response.isEmpty())
        response = "<i>No suggestions found</i>\n";
    try {
      resp.setContentType("text/xml");
      resp.getWriter().write(response);
    } catch (IOException e) {
      e.printStackTrace();
    }

  }

}
TOP

Related Classes of com.apps.ubc.cc.ajax.SearchSuggestionController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.